package com.qxbb.report.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qxbb.report.dto.InventoryCommodityDTO;
import com.qxbb.report.dto.InventoryDTO;
import com.qxbb.report.dto.InventoryQuanterDTO;
import com.qxbb.report.dto.InventoryYearDTO;
import com.qxbb.report.pojo.ChainStore;
import com.qxbb.report.vo.ChainStoreVO;
import com.qxbb.report.vo.InventoryBrandVO;
import com.qxbb.report.vo.InventoryCategoryVO;
import com.qxbb.report.vo.InventoryStoreVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ChainStoreMapper extends BaseMapper<ChainStore> {


    /**
     * 根据店铺id,查询店铺信息
     * @param storeId
     * @return
     */
    ChainStoreVO selectChainId(Integer storeId);

    /**
     * 查询所有店铺
     * @return
     */
    List<ChainStoreVO> selectAllStore();

    /**
     * 查询所有店铺信息（无状态，无parent)
     * @return
     */
    List<Integer> getAll();

    /**
     * 查询所有店铺信息（状态 =0)
     * @return
     */
    List<Integer> getActiveStore();

    /**
     * 查询所有店铺信息（parent = null)
     * @return
     */
    List<Integer> getAllParentStore();

    /**
     * 查询所有店铺信息（状态 =0,patent = null)
     * @return
     */
    List<Integer> getActiveParentStore();



    /**
     * 查询所有店铺和店铺经手人信息
     * @return
     */
    List<InventoryStoreVO> selectInventoryStore();


    /**
     *  查询店铺下品牌库存
     * @param storeId
     * @return
     */
    List<InventoryYearDTO> selectByChainId(Integer storeId);

    /**
     * 查询单个店铺库存
     * @param storeId
     * @return
     */
    InventoryStoreVO selectOneInventoryStore(Integer storeId);


    /**
     * 品牌库存
     * @param year
     * @param quarter
     * @param storeId
     * @return
     */
    List<InventoryBrandVO> selectInventoryBrand(@Param("year") Integer year, @Param("quarter") Integer quarter, @Param("storeId") Integer storeId);

    /**
     * InventoryCommodityVO
     * @param year
     * @param quarter
     * @param storeId
     * @param brandId
     * @return
     */
    List<InventoryCommodityDTO> selectInventoryCommodity(Integer year, Integer quarter, Integer storeId, Integer brandId);

    /**
     * 查询所有连锁店的id
     * @return
     */
    List<Integer> selectAllNonDeleted();


    /**
     * 模糊查询店铺id
     * @param storeName
     * @return
     */
    List<Integer> selectLikeInventory(String storeName);

    /**
     * 库存统计——》店铺 ———》时间 -> 季度
     * @param yearId
     * @return
     */
    List<InventoryQuanterDTO> selectByYearId(Integer storeId,Integer yearId);

    /**
     * 库存统计——》店铺 ———》时间  ->季度 -》 类别
     * @param year
     * @param quarter
     * @param storeId
     * @return
     */
    List<InventoryCategoryVO> selectInventoryCategory(Integer year, Integer quarter, Integer storeId);

    /**
     *
     * @param year
     * @param quarter
     * @param storeId
     * @param categoryId
     * @return
     */
    List<InventoryDTO> selectInventory(Integer year, Integer quarter, Integer storeId, Integer categoryId);

    /**
     * 根据店铺id获取店铺名称
     * @param storeId
     * @return
     */
    String selectChainName(Integer storeId);

    /**
     * 根据店铺id获取clientId
     * @param storeId
     * @return
     */
    Integer selectClientId(String storeId);

    /**
     * 查询所有店铺clientId
     * @return
     */
    List<Integer> SelectClientIds();

    /**
     * 根据client_id 查询连锁店名称
     * @param clientId
     * @return
     */
    String selectByClientId(String clientId);

    /**
     * 根据店铺id查询店铺信息
     * @param chainId
     * @return
     */
    ChainStore selectByStoreId(String chainId);

    /**
     * 查询经营者所有店铺clientId
     * @param chainIds
     * @return
     */
    List<Integer> selectOperatorClientIds(List<Integer> chainIds);
}
